#ifndef LOGICAL_HANDLER_H
#define LOGICAL_HANDLER_H
#include "SingleClass.h"
#include "global.h"
#include <unordered_map>
#include <functional>

class logical_handler:public SingleClass<logical_handler>{

public:
    //直接暴露接口可能不是很好-所以通过这个间接获得并执行
    void get_func_and_execute(struct full_msg *);  
      
private:
    friend class SingleClass<logical_handler>;
    logical_handler();
    std::unordered_map<u_short,std::function<void(struct full_msg *)>> handlers;  
    void init_handlers();

    void get_and_set_user_info(const std::string user_email,std::string &user_info);


    //各种处理函数
    void handler_chat_login(struct full_msg *); //处理逻辑登陆
    //void handler_chat_text_msg(struct full_msg *);  //处理文本消息得到发送
    void handler_search_user(struct full_msg *);    //处理用户查找请求
    void handler_add_friend_apply(struct full_msg *);   //处理添加好友请求
    void handler_friend_apply_res(struct full_msg *);   // 处理好友申请的结果
    void handler_chat_text_msg(struct full_msg *);      //处理客户端发送的文本消息
    void handler_response_notify_chat_text_msg(struct full_msg *); //处理客户端收到消息通知后的回应
};



#endif